From 1ee5f0966b3a14ea8c52ddbfe4d222c4f6619002 Mon Sep 17 00:00:00 2001 From: "kaf24@labyrinth.cl.cam.ac.uk" Date: Fri, 17 Jan 2003 14:07:19 +0000 Subject: [PATCH] bitkeeper revision 1.15.1.5 (3e280e17xqZ75-O3H14dqvzIc20XAQ) dev.c: Fix receive queue boundedness --- xen-2.4.16/net/dev.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/xen-2.4.16/net/dev.c b/xen-2.4.16/net/dev.c index 5c4d999bf3..449879a1a3 100644 --- a/xen-2.4.16/net/dev.c +++ b/xen-2.4.16/net/dev.c @@ -690,6 +690,7 @@ int netif_rx(struct sk_buff *skb) int this_cpu = smp_processor_id(); struct softnet_data *queue; unsigned long flags; + net_vif_t *vif; if (skb->stamp.tv_sec == 0) get_fast_time(&skb->stamp); @@ -703,13 +704,13 @@ int netif_rx(struct sk_buff *skb) netdev_rx_stat[this_cpu].total++; - if (skb->src_vif == VIF_UNKNOWN_INTERFACE) + if ( skb->src_vif == VIF_UNKNOWN_INTERFACE ) skb->src_vif = VIF_PHYSICAL_INTERFACE; - if (skb->dst_vif == VIF_UNKNOWN_INTERFACE) + if ( skb->dst_vif == VIF_UNKNOWN_INTERFACE ) net_get_target_vif(skb); - if (sys_vif_list[skb->dst_vif] == NULL) + if ( (vif = sys_vif_list[skb->dst_vif]) == NULL ) { // the target vif does not exist. goto drop; @@ -730,8 +731,9 @@ int netif_rx(struct sk_buff *skb) read_lock(&tasklist_lock); p = &idle0_task; do { - if ( p->domain != sys_vif_list[skb->dst_vif]->domain ) continue; - skb_queue_tail(&sys_vif_list[skb->dst_vif]->skb_list, skb); + if ( p->domain != vif->domain ) continue; + if ( vif->skb_list.qlen > 100 ) break; + skb_queue_tail(&vif->skb_list, skb); cpu_mask = mark_hyp_event(p, _HYP_EVENT_NET_RX); read_unlock(&tasklist_lock); goto found; -- 2.30.2